﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Boom.Navigation;

namespace Boom.GameObjects
{
    public class Item:Animation2D
    {
        private int _Type;
        private bool _ShowItem;
        private TimeSpan _ElapsedTimeDes;
        private TimeSpan _ElapsedTimeShow;
        private int _TimeBoom;

        //Loại của item: 0,1,2 tương ứng với tăng số lượng, tăng độ dài boom và tăng tốc cho nhân vật
        public int Type
        {
            get { return _Type; }
            set { _Type = value; }
        }

        //Trạng thái hiện ẩn của vật phẩm
        public bool ShowItem
        {
            get { return _ShowItem; }
            set { _ShowItem = value; }
        }

        public TimeSpan ElapsedTimeShow
        {
            get { return _ElapsedTimeShow; }
            set { _ElapsedTimeShow = value; }
        }

        public TimeSpan ElapsedTimeDes
        {
            get { return _ElapsedTimeDes; }
            set { _ElapsedTimeDes = value; }
        }

        public Item(Game Mygame, ref Texture2D Texture, Vector2 Position, int type)
            : base(Mygame, ref Texture, 100, 40, 40)
        {
            this.Position = Position;
            this.Type = type;
            Bounds = new Rectangle((int)Position.X + 10, (int)Position.Y + 10, 20, 20);
            Enabled = false;
            Visible = false;
            ShowItem = false;
            _TimeBoom = Config.TimeBoom;
            _ElapsedTimeDes = TimeSpan.Zero;
            _ElapsedTimeShow = TimeSpan.Zero;
        }

        //Hiện sau khi gạch bị phá
        private void Show_Item(GameTime gameTime)
        {
            if (ShowItem && !Enabled)
            {
                _ElapsedTimeShow += gameTime.ElapsedGameTime;
                if (_ElapsedTimeShow > TimeSpan.FromMilliseconds(Config.TimeShowItem))
                {
                    _ElapsedTimeShow -= TimeSpan.FromMilliseconds(Config.TimeShowItem);
                    Enabled = true;
                    Visible = true;
                }
            }
        }

        //Ẩn sau khi lửa của boom va chạm 
        private void Destroy_Item(GameTime gameTime)
        {
            if (!ShowItem && Enabled)
            {
                _ElapsedTimeDes += gameTime.ElapsedGameTime;
                if (_ElapsedTimeDes > TimeSpan.FromMilliseconds(Config.TimeShowItem))
                {
                    _ElapsedTimeDes -= TimeSpan.FromMilliseconds(Config.TimeShowItem);
                    Enabled = false;
                }
            }
        }

        public override void Update(GameTime gameTime)
        {
            Show_Item(gameTime);
            Destroy_Item(gameTime);
            base.Update(gameTime);
        }
    }
}
